#include "OneWire.h"

sbit Onewrie_DQ=P3^7;

/**
 * @brief 单总线初始化
 * @param None
 * @retval None
 **/
unsigned char OneWrie_Init(void)
{
	unsigned char i,AckByte;
	Onewrie_DQ=1;
	Onewrie_DQ=0;
	i = 227;while (--i);//500us
	Onewrie_DQ=1;
	i = 29;while (--i);//70us
	AckByte=Onewrie_DQ;
	i = 227;while (--i);
	return AckByte;
}

/**
 * @brief 单总线发送一位数据
 * @param None
 * @retval None
 **/
void OneWrie_SendBit(unsigned char Bit)
{
	unsigned char i;
	Onewrie_DQ=0;
	i = 3;while (--i);//10us
	Onewrie_DQ=Bit;
	i = 22;while (--i);//50us
	Onewrie_DQ=1;
}

/**
 * @brief 单总线读取一位数据
 * @param None
 * @retval 一位数据
 **/
unsigned char OneWrie_ReciveBit(void)
{
	unsigned char i,Bit;
	Onewrie_DQ=0;
	i = 1;while (--i);//5us
	Onewrie_DQ=1;
	i = 1;while (--i);//5us
	Bit=Onewrie_DQ;
	i = 22;while (--i);//50us
	return Bit;
}

/**
 * @brief 单总线发送一个字节
 * @param None
 * @retval None
 **/
void OneWrie_SendByte(unsigned char Byte)
{
	unsigned char i;
	for(i=0;i<8;i++)
	{
		OneWrie_SendBit(Byte&(0x01<<i));
	}
}

/**
 * @brief 单总线接收一个字节
 * @param None
 * @retval 一个字节
 **/
unsigned char OneWrie_ReciveByte(void)
{
	unsigned char i,Byte=0x00;
	for(i=0;i<8;i++)
	{
		if(OneWrie_ReciveBit())
		{
			Byte|=(0x01<<i);
		}
	}
	return Byte;
}

















